package cn.com.homeyoda.aimate.aihealth.data;

import com.google.gson.JsonObject;

import java.util.List;

import cn.com.homeyoda.aimate.aihealth.bean.AddUserInfoBean;
import cn.com.homeyoda.aimate.aihealth.bean.AnswerAnalysisBean;
import cn.com.homeyoda.aimate.aihealth.bean.AnswerBean;
import cn.com.homeyoda.aimate.aihealth.bean.ArticleBean;
import cn.com.homeyoda.aimate.aihealth.bean.BannerBean;
import cn.com.homeyoda.aimate.aihealth.bean.BaseArticleBean;
import cn.com.homeyoda.aimate.aihealth.bean.BaseResponse;
import cn.com.homeyoda.aimate.aihealth.bean.BaseResponse2;
import cn.com.homeyoda.aimate.aihealth.bean.BindUserQrCode;
import cn.com.homeyoda.aimate.aihealth.bean.BloodPressureBean;
import cn.com.homeyoda.aimate.aihealth.bean.BmiBean;
import cn.com.homeyoda.aimate.aihealth.bean.ChronicDiseaseItemBean;
import cn.com.homeyoda.aimate.aihealth.bean.DeviceIdBean;
import cn.com.homeyoda.aimate.aihealth.bean.DeviceIsAuthBean;
import cn.com.homeyoda.aimate.aihealth.bean.ExaminationReportBean;
import cn.com.homeyoda.aimate.aihealth.bean.ExaminationReportDetailsBean;
import cn.com.homeyoda.aimate.aihealth.bean.ExaminationReportListBean;
import cn.com.homeyoda.aimate.aihealth.bean.FaceInfoBean;
import cn.com.homeyoda.aimate.aihealth.bean.FamilyMembersBean;
import cn.com.homeyoda.aimate.aihealth.bean.FeedBackDetailsBean;
import cn.com.homeyoda.aimate.aihealth.bean.FeedBackListBean;
import cn.com.homeyoda.aimate.aihealth.bean.FeedbackTypeBean;
import cn.com.homeyoda.aimate.aihealth.bean.JoinPlanBody;
import cn.com.homeyoda.aimate.aihealth.bean.UnJoinPlanBody;
import cn.com.homeyoda.aimate.aihealth.bean.QueryLinkBean;
import cn.com.homeyoda.aimate.aihealth.bean.VisualBean;
import cn.com.homeyoda.aimate.aihealth.bean.HomeReportListBean;
import cn.com.homeyoda.aimate.aihealth.bean.InspectionScheduleBean;
import cn.com.homeyoda.aimate.aihealth.bean.InspectionScheduleTypeBean;
import cn.com.homeyoda.aimate.aihealth.bean.IsShowCompleteInfoBean;
import cn.com.homeyoda.aimate.aihealth.bean.IsShowJoinFamilyBean;
import cn.com.homeyoda.aimate.aihealth.bean.IsUpdateBean;
import cn.com.homeyoda.aimate.aihealth.bean.KePuBannerList;
import cn.com.homeyoda.aimate.aihealth.bean.LevelDataBean;
import cn.com.homeyoda.aimate.aihealth.bean.LoginBean;
import cn.com.homeyoda.aimate.aihealth.bean.LoginQrCodeBean;
import cn.com.homeyoda.aimate.aihealth.bean.MessageDetailBean;
import cn.com.homeyoda.aimate.aihealth.bean.MessageListBean;
import cn.com.homeyoda.aimate.aihealth.bean.MessageTypeListBean;
import cn.com.homeyoda.aimate.aihealth.bean.MyselfPlanBean;
import cn.com.homeyoda.aimate.aihealth.bean.NavigationBean;
import cn.com.homeyoda.aimate.aihealth.bean.PersonalInfoBean;
import cn.com.homeyoda.aimate.aihealth.bean.PopularDetailBean;
import cn.com.homeyoda.aimate.aihealth.bean.PopularListBean;
import cn.com.homeyoda.aimate.aihealth.bean.PossibleFamilyMembersBean;
import cn.com.homeyoda.aimate.aihealth.bean.PromptUserListBean;
import cn.com.homeyoda.aimate.aihealth.bean.QuestionListBean;
import cn.com.homeyoda.aimate.aihealth.bean.QuestionnaireAnswerBean;
import cn.com.homeyoda.aimate.aihealth.bean.QuestionnaireNetBean;
import cn.com.homeyoda.aimate.aihealth.bean.QuestionnaireOptionBean;
import cn.com.homeyoda.aimate.aihealth.bean.QuestionnaireTopicBean;
import cn.com.homeyoda.aimate.aihealth.bean.QuizListBean;
import cn.com.homeyoda.aimate.aihealth.bean.RankingBean;
import cn.com.homeyoda.aimate.aihealth.bean.RecommendRecipeBean;
import cn.com.homeyoda.aimate.aihealth.bean.ReplenishChronicBean;
import cn.com.homeyoda.aimate.aihealth.bean.SystemBean;
import cn.com.homeyoda.aimate.aihealth.bean.SportPlanBean;
import cn.com.homeyoda.aimate.aihealth.bean.SportPlanTitleBean;
import cn.com.homeyoda.aimate.aihealth.bean.UpdateUserInfoBean;
import cn.com.homeyoda.aimate.aihealth.bean.UploadFileBean;
import cn.com.homeyoda.aimate.aihealth.bean.UploadVideoBean;
import cn.com.homeyoda.aimate.aihealth.bean.UploadVideoShareBean;
import cn.com.homeyoda.aimate.aihealth.bean.UserInfoBean;
import cn.com.homeyoda.aimate.aihealth.bean.UserIntegralBean;
import cn.com.homeyoda.aimate.aihealth.bean.UserRecordsBean;
import cn.com.homeyoda.aimate.aihealth.bean.VideoShareBean;
import cn.com.homeyoda.aimate.aihealth.bean.VideoShareListBean;
import cn.com.homeyoda.aimate.aihealth.bean.WeChatTabListBean;
import io.reactivex.Observable;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Part;
import retrofit2.http.Path;
import retrofit2.http.Query;

/**
 * Created By 刘纯贵
 * Created Time 2020/4/29
 */
public interface ApiService {

    //注册
    @POST("user/login")
    Observable<BaseResponse<LoginBean>> register(@Query("username") String username,
                                                 @Query("password") String password,
                                                 @Query("repassword") String repassword);

    //退出
    @GET("user/logout/json")
    Observable<BaseResponse> loginout();

    @GET("lg/coin/userinfo/json")
    Observable<BaseResponse<UserIntegralBean>> getIntegral();

    //获取首页轮播图
    @GET("banner/json")
    Observable<BaseResponse<List<BannerBean>>> getBanner();

    //首页文章列表
    @GET("article/list/{page}/json")
    Observable<BaseResponse<BaseArticleBean<List<ArticleBean>>>> getArticle(@Path("page") int pageNum);

    //获取体系列表
    @GET("tree/json")
    Observable<BaseResponse<List<SystemBean>>> getSystemItem();

    //获取导航列表
    @GET("navi/json")
    Observable<BaseResponse<List<NavigationBean>>> getNavigationItem();

    //获取项目分类
    @GET("project/tree/json")
    Observable<BaseResponse<List<SystemBean>>> getProjectList();

    //获取单个项目类别数据列表
    @GET("project/list/{page}/json")
    Observable<BaseResponse<BaseArticleBean<List<ArticleBean>>>> getProjectArticleItem(@Path("page") int page, @Query("cid") int id);

    //获取公众号分类
    @GET("wxarticle/chapters/json")
    Observable<BaseResponse<List<WeChatTabListBean>>> WeChatTabList();

    //获取公众号作者数据列表
    @GET("wxarticle/list/{id}/{page}/json")
    Observable<BaseResponse<BaseArticleBean<List<ArticleBean>>>> getWechatArticleItem(@Path("page") int page, @Path("id") int id);

    //获取个人积分
    @GET("lg/coin/list/{page}/json")
    Observable<BaseResponse<BaseArticleBean<List<LevelDataBean>>>> getLevelData(@Path("page") int page);

    //获取排名列表
    @GET("coin/rank/{page}/json")
    Observable<BaseResponse<BaseArticleBean<List<RankingBean>>>> getRankingData(@Path("page") int page);

    //获取收藏文章列表
    @GET("lg/collect/list/{page}/json")
    Observable<BaseResponse<BaseArticleBean<List<ArticleBean>>>> getCollectionData(@Path("page") int page);

    //收藏文章
    @POST("lg/collect/{id}/json")
    Observable<BaseResponse> collectionArticle(@Path("id") int id);

    //取消收藏文章
    @POST("lg/uncollect_originId/{id}/json")
    Observable<BaseResponse> unCollectionArticle(@Path("id") int id);

    /**
     * 取消收藏文章(收藏界面)
     * originId 代表的是你收藏之前的那篇文章本身的id； 但是收藏支持主动添加，这种情况下，
     * 没有originId则为-1
     */
    @FormUrlEncoded
    @POST("lg/uncollect/{id}/json")
    Observable<BaseResponse> unCollectionArticle(@Path("id") int id,
                                                 @Field("originId") int originId);

    //获取体系某个类别数据列表
    @GET("article/list/{page}/json")
    Observable<BaseResponse<BaseArticleBean<List<ArticleBean>>>> getSystemTypeItem(@Path("page") int pageNum,
                                                                                   @Query("cid") int id);


    //获取视频链接
    @GET("operation/ht/video/bt")
    @Headers("show-loading: true")
    Observable<BaseResponse2<Object>> getVideoUrl();

    //上传体检视频
    @Multipart
    @POST("operation/ht/video")
    Observable<BaseResponse2<UploadVideoBean>> uploadVideo(@Part MultipartBody.Part video,
                                                           @Part("deviceId") RequestBody deviceId);

    //查看体检报告列表
    @POST("operation/ht/video/list")
    Observable<ExaminationReportListBean> examinationReportList(@Query("id") String id, @Query("pageSize") String pageSize,
                                                                @Query("pageNum") String pageNum, @Query("infoId") String infoId);

    //体检报告详情
    @GET("operation/ht/video/{id}")
    @Headers("show-loading: true")
    Observable<ExaminationReportDetailsBean> examinationReportDetails(@Path("id") String id);

    //删除报告数据
    @DELETE("operation/ht/video/{id}")
    Observable<BaseResponse2> deleteReport(@Path("id") String id);

    //查看体检可视化图表
    @GET("operation/ht/video/visual")
    Observable<InspectionScheduleBean> inspectinsSchedule(@Query("id") String id);

    //根据类型查询图表
    @GET("operation/ht/video/type/visual")
    Observable<InspectionScheduleTypeBean> inspectinsScheduleType(@Query("id") String infoId, @Query("type") String type, @Query("startTime") String startTime,
                                                                  @Query("endTime") String endTime, @Query("pageSize") String pageSize, @Query("pageNum") String pageNum, @Query("sort") String sort);

    // 根据类型查询心率、血氧、呼吸图表
    @GET("operation/ht/video/type/visual")
    Observable<VisualBean> getVisualRecord(@Query("id") String infoId, @Query("type") String type, @Query("startTime") String startTime,
                                           @Query("endTime") String endTime, @Query("pageSize") int pageSize, @Query("pageNum") int pageNum);

    // 根据类型查询血压图表
    @GET("operation/ht/video/type/visual")
    Observable<BloodPressureBean> getBloodPressureRecord(@Query("id") String infoId, @Query("type") String type, @Query("startTime") String startTime,
                                                         @Query("endTime") String endTime, @Query("pageSize") int pageSize, @Query("pageNum") int pageNum);

    //获取问卷调查列表
    @GET("operation/ht/questionnaire/list")
    Observable<QuestionnaireNetBean>
    getQuestionnaireList(@Query("pageSize") int pageSize, @Query("pageNum") int pageNum);

    //获取问卷调查题目
    @GET("operation/ht/questionnaire/topic")
    Observable<BaseResponse2<List<QuestionnaireTopicBean>>> getQuestionnaireTopic(@Query("id") String id);

    //获取问卷调查选项
    @GET("operation/ht/questionnaire/choice")
    Observable<BaseResponse2<List<QuestionnaireOptionBean>>> getQuestionnaireOption(@Query("id") String id);

    //提交问卷调查答题
    @POST("operation/ht/questionnaire/answer")
    Observable<BaseResponse2> submitQuestionnaireAnswer(@Body QuestionnaireAnswerBean answerBean);

    //查询反馈类型列表
    @GET("operation/ht/feedback/type")
    Observable<FeedbackTypeBean> getFeedBackType();

    //新增用户反馈
    @POST("operation/ht/feedback")
    Observable<BaseResponse2> uploadFeedBack(@Body JsonObject params);

    //用户查询反馈列表
    @GET("operation/ht/feedback/list")
    Observable<FeedBackListBean> feedBackList(@Query("userId") String userId, @Query("type") String type, @Query("describe") String describe,
                                              @Query("pageSize") String pageSize, @Query("pageNum") String pageNum);

    //查询用户反馈详情
    @GET("operation/ht/feedback")
    Observable<FeedBackDetailsBean> feedBackDetails(@Query("id") String id);

    //判断是否显示完善信息
    @GET("operation/ht/isShowCompleteInfo")
    Observable<IsShowCompleteInfoBean> isShowCompleteInfo(@Query("faceId") String faceId);

    //判断是否显示加入家庭
    @GET("operation/ht/isShowJoinFamily")
    Observable<IsShowJoinFamilyBean> isShowJoinFamily(@Query("faceId") String faceId, @Query("deviceId") String deviceId, @Query("userId") String userId);

    //完善信息
    @POST("operation/ht/faceInfo/update")
    Observable<BaseResponse2> completeInfo(@Body JsonObject params);

    //加入家庭
    @POST("operation/ht/joinFamily")
    Observable<BaseResponse2> joinFamily(@Body JsonObject params);

    //查询个人信息
    @GET("operation/ht/queryUserInfo")
    Observable<PersonalInfoBean> getPersonalInfo(@Query("faceId") String faceId);

    //查询消息通知列表
    @GET("operation/ht/message/list")
    @Headers("show-loading: true")
    Observable<MessageListBean> getMessageList(@Query("userId") String userId, @Query("pageSize") String pageSize, @Query("pageNum") String pageNum);

    //查询消息通知详情
    @GET("operation/ht/message/detail")
    Observable<MessageDetailBean> getMessageDetail(@Query("id") String id);

    //修改消息为已读状态
    @GET("operation/ht/message/readMsg")
    Observable<BaseResponse2> readMsg(@Query("id") String id);

    //消息类型查询
    @GET("operation/ht/message/typeList")
    Observable<MessageTypeListBean> getMessageTypeList();

    //查询问答分类

    @GET("operation/ht/quiz/typeList")
    Observable<MessageTypeListBean> getQuizTypeList();


    //查询问答列表
    @GET("operation/ht/quiz/queryQuizList")
    Observable<QuizListBean> getQuizList(@Query("quizType") String quizType, @Query("pageSize") String pageSize, @Query("pageNum") String pageNum);

    //查询问答题目列表
    @GET("operation/ht/quiz/questionList")
    Observable<QuestionListBean> getQuestionList(@Query("quizId") String quizId);

    //提交问答答案
    @POST("operation/ht/quiz/submitAnswer")
    Observable<BaseResponse2> submitAnswer(@Body AnswerBean answerBean);

    //查询问答记录列表
    @GET("operation/ht/quiz/queryUserRecords")
    Observable<UserRecordsBean> getUserRecords(@Query("userId") String userId, @Query("quizType") String quizType, @Query("pageSize") String pageSize, @Query("pageNum") String pageNum);


    //查询问答记录列表
    @GET("operation/ht/quiz/detail")
    Observable<AnswerAnalysisBean> getAnswerAnalysis(@Query("quizRecordId") String quizRecordId);

    //猜你想要添加成员列表
    @GET("operation/ht/queryPossibleFamilyMembers")
    Observable<PossibleFamilyMembersBean> getPossibleFamilyMembers(@Query("userId") String userId, @Query("deviceId") String deviceId);

    //家庭成员列表
    @GET("operation/ht/userInfo/queryFamilyMembers")
    Observable<FamilyMembersBean> getFamilyMembers(@Query("familyId") String familyId);

    //修改家庭名称
    @GET("operation/ht/updateFamilyName")
    Observable<BaseResponse2> updateFamilyName(@Query("familyId") String familyId, @Query("familyName") String familyName);

    //家庭成员列表
    @GET("operation/ht/promptUserList")
    Observable<PromptUserListBean> getPromptUserList(@Query("familyId") String familyId, @Query("deviceId") String deviceId, @Query("pageNum") int pageNum, @Query("pageSize") int pageSize);

    //添加家庭成员
    @GET("operation/ht/faceFamily/add")
    Observable<BaseResponse2> addFamilyMember(@Query("familyId") String familyId, @Query("faceId") String faceId);

    //删除家庭成员
    @GET("operation/ht/faceFamily/delete")
    Observable<BaseResponse2> deleteFamilyMember(@Query("familyId") String familyId, @Query("faceId") String faceId);

    //删除家庭成员
    @GET("operation/ht/faceInfo/isUpdate")
    Observable<IsUpdateBean> isUpdateMember(@Query("id") String id, @Query("faceId") String faceId, @Query("userId") String userId);

    //查询用户信息
    @GET("operation/ht/userInfo/queryUserInfo")
    Observable<UserInfoBean> getUserInfo(@Query("userInfoId") String userInfoId);

    //家庭成员添加
    @POST("operation/ht/userInfo/add")
    Observable<BaseResponse2> addUserInfo(@Body AddUserInfoBean addUserInfoBean);

    //更改家庭成员信息
    @POST("operation/ht/userInfo/update")
    Observable<BaseResponse2> updateUserInfo(@Body UpdateUserInfoBean updateUserInfoBean);


    //删除家庭成员信息
    @POST("operation/ht/userInfo/delete")
    Observable<BaseResponse2> deleteUserInfo(@Body JsonObject params);

    //查询科普文章列表
    @GET("operation/ht/health/popular/list")
    @Headers("show-loading: true")
    Observable<PopularListBean> getPopularList(@Query("type") String type, @Query("pageNum") String pageNum, @Query("pageSize") String pageSize);

    //查询科普文章详情
    @GET("operation/ht/health/popular/detail")
    @Headers("show-loading: true")
    Observable<PopularDetailBean> getPopularDetail(@Query("id") String id);

    //查询科普分类
    @GET("operation/ht/health/popularType")
    Observable<MessageTypeListBean> getPopularType();

    //科普轮播图
    @GET("operation/ht/health/popular/bannerList")
    Observable<KePuBannerList> getKePuBannerList();

    //判断设备是否授权应用
    @GET("operation/ht/device/queryDeviceIsAuth")
    @Headers("show-loading: true")
    Observable<DeviceIsAuthBean> deviceIsAuth(@Query("deviceSn") String deviceSn);

    //生成登录二维码图片
    @GET("operation/ht/getLoginQrCode")
    Observable<BaseResponse2<LoginQrCodeBean>> getLoginQrCode();

    //查询要登录手机号（需轮询）
    @GET("operation/ht/selectFamilyLoginByCode")
    Observable<BaseResponse2> selectFamilyLoginByCode(@Query("loginSignCode") String loginSignCode);

    //登录
    @GET("operation/ht/login")
    Observable<BaseResponse2<LoginBean>> login(@Query("deviceSn") String deviceSn, @Query("phone") String phone);

    //查询慢性病列表
    @GET("operation/ht/chronic/list")
    Observable<ReplenishChronicBean> replenishChronicList(@Query("faceId") String faceId);

    //首页体检记录列表
    @GET("operation/ht/queryHomeReportList")
    @Headers("show-loading: true")
    Observable<HomeReportListBean> homeReportList(@Query("deviceSn") String deviceSn, @Query("familyId") String familyId,
                                                  @Query("pageNum") String pageNum, @Query("pageSize") String pageSize);

    //上传文件
    @POST("common/oss/upload")
    Observable<UploadFileBean> uploadFile(@Body RequestBody body);


    //查询用户信息
    @GET("operation/ht/queryFaceInfo")
    Observable<FaceInfoBean> queryFaceInfo(@Query("faceId") String faceId, @Query("familyId") String familyId);


    //查询饮食计划
    @GET("operation/ht/health/queryRecommendRecipe")
    Observable<RecommendRecipeBean> queryRecommendRecipe(@Query("faceId") String faceId);


    //查询BMI
    @GET("operation/ht/health/queryBmi")
    Observable<BmiBean> queryBmi(@Query("faceId") String faceId);

    //查询运动计划分类
    @GET("operation/ht/health/sportPlanTypes")
    Observable<SportPlanTitleBean> sportPlanTypes();

    //运动计划列表
    @GET("operation/ht/health/querySportPlans")
    Observable<SportPlanBean> querySportPlans(@Query("planType") String planType);

    //运动计划详情
    @GET("operation/ht/health/queryMyselfPlan")
    Observable<MyselfPlanBean> queryMyselfPlan(@Query("faceId") String faceId, @Query("planId") String planId, @Query("queryDate") String queryDate);

    // 查询当前用户是否已加入计划
    @GET("operation/ht/health/queryMyselfPlan")
    Observable<MyselfPlanBean> hasSelfPlan(@Query("faceId") String faceId);

    // 加入运动计划
    @POST("operation/ht/health/bindSportPlan")
    Observable<MyselfPlanBean> bindSportPlan(@Body JoinPlanBody object);

    // 退出运动计划
    @POST("operation/ht/health/unbindSportPlan")
    Observable<MyselfPlanBean> unbindSportPlan(@Body UnJoinPlanBody object);


    // 关注慢性病列表查询
    @GET("operation/ht/health/attentionChronicList")
    Observable<ChronicDiseaseItemBean> attentionChronicList();

    // 新增慢性病
    @GET("operation/ht/health/attentionChronicAdd")
    Observable<ChronicDiseaseItemBean> attentionChronicAdd(@Query("faceId") String faceId, @Query("dictCodes") String dictCodes);


    //查询体检共享列表
    @GET("operation/ht/video/share/list")
    Observable<VideoShareListBean> getVideoShareList(@Query("id") long id, @Query("pageNum") int pageNum, @Query("pageSize") int pageSize);

    //修改体检记录分享状态
    @GET("operation/ht/video/share/status")
    Observable<BaseResponse2> updateShareStatus(@Query("id") long id, @Query("status") int status);

    //查询体检记录分享配置
    @GET("operation/ht/video/share/config")
    Observable<BaseResponse2> getShareConfig(@Query("id") long id);

    //查询体检共享详情
    @GET("operation/ht/video/share")
    Observable<VideoShareBean> getVideoShare(@Query("id") long id);

    //分享体检记录
    @POST("operation/ht/video/share")
    Observable<BaseResponse2> uploadVideoShare(@Body UploadVideoShareBean bean);

    //修改体检记录分享配置
    @PUT("operation/ht/video/share")
    Observable<BaseResponse2> updateVideoShare(@Body UploadVideoShareBean bean);

    //撤销体检记录分享
    @DELETE("operation/ht/video/share")
    Observable<BaseResponse2> deleteVideoShare(@Query("id") long id);

    //撤销体检记录分享
    @GET("operation/ht/video/list")
    Observable<ExaminationReportBean> getExaminationReportList(@Query("id") String userId, @Query("infoId") String infoId, @Query("pageNum") int pageNum, @Query("pageSize") int pageSize);

    //搜索手机号头像
    @GET("operation/ht/video/share/link")
    Observable<QueryLinkBean> queryLink(@Query("link") String link);

    //根据设备SN获取设备id
    @GET("operation/ht/device/queryDeviceId")
    Observable<DeviceIdBean> getDeviceId(@Query("deviceSn") String deviceSn);

    //绑定
    @GET("operation/ht/getBindUserQrCode")
    Observable<BindUserQrCode> getBindUserQrCode(@Query("deviceSn") String deviceSn);

    /**
     * 根据人脸图片文件查询Face ID
     * @param file 包含人脸图片的Multipart文件部分
     * @return 包含Face ID信息的Observable
     */
    @Multipart
    @POST("operation/app/faceInfo/queryFaceIdByFile")
    Observable<FaceIdBean> queryFaceIdByImage(@Part MultipartBody.Part file);

   /**
     * 上传人脸图片并添加人脸信息
     * @param file 包含人脸图片的Multipart文件部分
     * @return 包含添加结果的Observable
     */
    @Multipart
    @POST("operation/ht/faceInfo/addFace")
    Observable<AddFaceBean> uploadFaceImage(@Part MultipartBody.Part file);

    /**
     * 上传体检视频文件
     * @param video 体检视频文件
     * @param useDeviceId 使用设备ID
     * @param faceId 关联的人脸ID
     * @param deviceId 设备ID
     * @return 包含上传结果的Observable
     */
    @Multipart
    @POST("operation/ht/video/upload")
    Observable<BaseResponse2> uploadExaminationVideo(
            @Part MultipartBody.Part video,
            @Part("useDeviceId") RequestBody useDeviceId,
            @Part("faceId") RequestBody faceId,
            @Part("deviceId") RequestBody deviceId);

    /**
     * 获取体检详情
     * @param examinationId 体检记录ID
     * @return 包含体检详情的Observable
     */
    @GET("operation/ht/video/v2/{id}")
    Observable<ExaminationDetail> fetchExaminationDetail(@Path("id") String examinationId);


}
